package com.pan.admin.generator.config;

import com.gitee.apanlh.util.base.Eq;
import com.pan.admin.generator.constant.ApiGenFieldTemplateTypeEnum;
import lombok.Data;

/**
 *  模板字段配置
 *
 *  @author Pan
 */
@Data
public class ApiGenFieldTemplateConfig {

    /** 撞库模式 */
    private Boolean hasDataExchange             = false;
    /** 进件模式 */
    private Boolean hasApply                    = false;
    /** 平台解析撞库模式 */
    private Boolean hasParseDataExchange    = false;
    /** 进件通知回调模式 */
    private Boolean hasApplyPull                = false;
    /** 只联登模式 */
    private Boolean hasFederate                 = false;
    /** 撞库联登模式 */
    private Boolean hasDataExchangeFederate     = false;

    public ApiGenFieldTemplateConfig() {
        super();
    }

    /**
     *  构建配置
     *
     *  @param  apiGenFieldTemplateTypeEnum     字段模板枚举
     *  @return ApiGenFieldTemplateConfig
     */
    public static ApiGenFieldTemplateConfig ofEnum(ApiGenFieldTemplateTypeEnum apiGenFieldTemplateTypeEnum) {
        ApiGenFieldTemplateConfig apiGenFieldTemplateConfig = new ApiGenFieldTemplateConfig();
        Eq.call(ApiGenFieldTemplateTypeEnum.DATA_EXCHANGE, apiGenFieldTemplateTypeEnum,                 () -> apiGenFieldTemplateConfig.setHasDataExchange(true));
        Eq.call(ApiGenFieldTemplateTypeEnum.APPLY, apiGenFieldTemplateTypeEnum,                         () -> apiGenFieldTemplateConfig.setHasApply(true));
        Eq.call(ApiGenFieldTemplateTypeEnum.PARSE_DATA_EXCHANGE, apiGenFieldTemplateTypeEnum,           () -> apiGenFieldTemplateConfig.setHasParseDataExchange(true));
        Eq.call(ApiGenFieldTemplateTypeEnum.APPLY_PULL, apiGenFieldTemplateTypeEnum,                    () -> apiGenFieldTemplateConfig.setHasApplyPull(true));
        Eq.call(ApiGenFieldTemplateTypeEnum.FEDERATE, apiGenFieldTemplateTypeEnum,                      () -> apiGenFieldTemplateConfig.setHasFederate(true));
        Eq.call(ApiGenFieldTemplateTypeEnum.DATA_EXCHANGE_FEDERATE, apiGenFieldTemplateTypeEnum,        () -> apiGenFieldTemplateConfig.setHasDataExchangeFederate(true));
        return apiGenFieldTemplateConfig;
    }
}
